﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aplicacion.Base.WinForm;
using System.Data;
using BaseDatos.Comun;
using BaseDatos;

namespace Modulo.Seguridad.Base
{
    public class EBOpcion:EntidadBase
    {
        #region Campos
        private string codmo = "";
        private string codmod = "";
        private string dscopc = "";
        private string comando = "";
        private string flagpadpopup = "";
        private string menu = "";
        private string orden = "";
        private string flaglinea = "";
        private string acceso = "";
        private string modulo = "";
        private string linea = "";
        private string tipoacceso = "";
        #endregion

        #region Propiedades
        public string Linea
        {
            get { return linea; }
            set { linea = value; }
        }
        public string Menu
        {
            get { return menu; }
            set { menu = value; }
        }
        public string Modulo
        {
            get { return modulo; }
            set { modulo = value; }
        }
        public string CodigoOpcion
        {
            get { return codmo; }
            set { codmo = value; }
        }
        public string Opcion
        {
            get { return dscopc; }
            set { dscopc = value; }
        }
        public string CodigoModulo
        {
            get { return codmod; }
            set { codmod = value; }
        }
        public string Comando
        {
            get { return comando; }
            set { comando = value; }
        }
        public string FlagPadpopup
        {
            get { return flagpadpopup; }
            set { flagpadpopup = value; }
        }
        public string FlagLinea
        {
            get { return flaglinea; }
            set { flaglinea = value; }
        }
        public string Orden
        {
            get { return orden; }
            set { orden = value; }
        }
        public string Acceso
        {
            get { return acceso; }
            set { acceso = value; }
        }
        public string TipoAcceso
        {
            get { return tipoacceso; }
            set { tipoacceso = value; } 
        }
        #endregion
        #region Constructores
        public EBOpcion()
            :base()
        { 
        }
        public EBOpcion(DataRow Registros )
            :this()
        {
            Cargar(Registros);
        }
        public EBOpcion(string opcion)
            : this()
        {
            Cargar(opcion);
        }
        #endregion

        #region Métodos
        protected  override void Cargar(System.Data.DataRow registros)
        {
            base.Cargar(registros);
            if (DataRow != null)
            {
                try
                {
                    linea = RetornarCampo("linea", linea).ToString();
                    orden = RetornarCampo("orden", orden).ToString();
                    codmod = RetornarCampo("codmod", codmod).ToString();
                    dscopc = RetornarCampo("dscopc", dscopc).ToString();
                    codmo = RetornarCampo("codmo", codmo).ToString();
                    comando = RetornarCampo("comando", comando).ToString();
                    modulo = RetornarCampo("modulo", modulo).ToString();
                    menu = RetornarCampo("menu", menu).ToString();
                    flaglinea = RetornarCampo("flaglinea", flaglinea).ToString();
                    flagpadpopup = RetornarCampo("flagpadpopup", flagpadpopup).ToString();
                    acceso = RetornarCampo("acceso", acceso).ToString();
                    tipoacceso = RetornarCampo("tipoacceso", tipoacceso).ToString();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        public string ObtenerCorrelativoOrden()
        {
            DataSet dsOrden = ConexionBaseDatos.Conexion.CrearDataSet("select max(orden)+1 from ck_moduloxopcion where flgeli ='0'",CommandType.Text);
            return dsOrden.Tables[0].Rows[0][0].ToString();
        }
        protected void Cargar(string codigo)
        {
            DbParametro[] Parametros = new DbParametro[1];
            Parametros[0] = new DbParametro("pcodmo", codigo);
            ////Consulta la base de datos y crea un dataset
            DataSet Ds = ConexionBaseDatos.Conexion.CrearDataSet("GETCK_MODULOXOPCION", Parametros);
            ////Si hay más de 0 registros llama el venteo cargar(DataRow Registro)
            if (Ds.Tables[0].Rows.Count > 0)
            {
                Cargar(Ds.Tables[0].Rows[0]);
            }
        }
        public void GrabarOrden()
        {
            ConexionBaseDatos.Conexion.EjecutarComando("update CK_MODULOXOPCION set orden = '" + orden + "' where codmo ='" + codmo + "' and flgeli ='0'", CommandType.Text);
        }
        public override void Grabar()
        {
            try
            {
            DbParametro[] Parametros = new DbParametro[10];
            Parametros[0] = new DbParametro("pcodmo", codmo);
            Parametros[1] = new DbParametro("pcodmod", codmod);
            Parametros[2] = new DbParametro("pdscopc", dscopc);
            Parametros[3] = new DbParametro("pcomando",comando);
            Parametros[4] = new DbParametro("pflagpadpopup", flagpadpopup);
            Parametros[5] = new DbParametro("porden", orden);
            Parametros[6] = new DbParametro("pflaglinea",flaglinea);
            Parametros[7] = new DbParametro("pacceso", acceso);
            Parametros[8] = new DbParametro("pusuario", Environment.UserName.ToUpper());
            Parametros[9] = new DbParametro("pestacion", Environment.MachineName.ToUpper());
            ConexionBaseDatos.Conexion.EjecutarComando("SETCK_MODULOXOPCION", Parametros);
            }
            catch (Exception ex)
            {
              throw(ex);
            }
        }
        public override void Eliminar()
        {
            try
            {
            DbParametro[] Parametros = new DbParametro[3];
            Parametros[0] = new DbParametro("pcodmo", codmo);
            Parametros[1] = new DbParametro("pusuario", Environment.UserName.ToUpper());
            Parametros[2] = new DbParametro("pestacion", Environment.MachineName.ToUpper());
            ConexionBaseDatos.Conexion.EjecutarComando("DELCK_MODULOXOPCION", Parametros);
            }
            catch (Exception ex)
            {
                throw(ex);
            }
        }
        #endregion
    }
}
